package parking;

import parking.entity.Car;
import parking.entity.Ticket;
import parking.exception.AllParkLotIsFullException;
import parking.service.ParkReport;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;

/**
 * @author daiqing.chen
 */
public class SmartParkBoy extends ParkBoy {

    /**
     * 所拥有的车场
     */
    protected List<ParkLot> parkLots;

    /**
     * 构造器
     * @param parkLots 可变参数
     */
     SmartParkBoy(ParkLot... parkLots){
        super(parkLots);
        this.parkLots = Arrays.asList(parkLots);
    }
/*
    *//**
     * 冒泡排序
     *
     * @return lotList
     *//*
    protected List<ParkLot> sort(){
       for (int i=1;i<parkLots.size();i++) {
           for (int j=0;j<parkLots.size()-i;j++) {
               if (parkLots.get(j).surplusSpace()<parkLots.get(j+1).surplusSpace()) {
                   ParkLot parkLot1 = parkLots.get(j);
                   ParkLot parkLot2 = parkLots.get(j+1);
                   parkLots.set(j,parkLot2);
                   parkLots.set(j+1,parkLot1);
               }
           }
       }
       return parkLots;
    }

    *//**
     * 寻找最大停车场
     * @return　optional
     *//*
    @Override
    protected Optional<ParkLot> findParkLot(){
        sort();
        return parkLots.stream().filter(ParkLot::hasSpace).findFirst();
    }*/

    public Optional<ParkLot> findParkLot() {
        return parkLots.stream().filter(ParkLot::hasSpace).
                max(Comparator.comparing(ParkLot::surplusSpace));
    }

}
